-use std::cmp::Ordering;
+use std::cmp::{self, Ordering};
use std::collections::hash_map::{HashMap, Values, IterMut};
use std::fmt::{self, Formatter};
use std::hash;
ref precise, .. } => {
try!(write!(f, "{}{}", url, url_ref(reference)));
- match *precise {
- Some(ref s) => {
- try!(write!(f, "#{}", &s[..8]));
- }
- None => {}
+ if let Some(ref s) = *precise {
+ let len = cmp::min(s.len(), 8);
+ try!(write!(f, "#{}", &s[..len]));
}
Ok(())
- },
+ }
SourceIdInner { kind: Kind::Registry, ref url, .. } => {
write!(f, "registry {}", url)
}
.arg("-p").arg("dep1"),
execs().with_stdout(""));
+ // Don't do anything bad on a weird --precise argument
+ println!("bar bad precise update");
+ assert_that(p.cargo("update")
+ .arg("-p").arg("bar")
+ .arg("--precise").arg("0.1.2"),
+ execs().with_status(101).with_stderr("\
+Unable to update [..]
+
+To learn more, run the command again with --verbose.
+"));
+
// Specifying a precise rev to the old rev shouldn't actually update
// anything because we already have the rev in the db.
println!("bar precise update");